import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

// 游戏区域绘图者
class GameBoardPainter extends CustomPainter {
  final Function _mOnPaint; // 绘图方法

  /// 构造方法。
  GameBoardPainter(this._mOnPaint);

  /// 重绘事件的响应方法。
  /// @param drawer 绘图者
  /// @param size   尺寸
  @override
  void paint(Canvas canvas, Size size) {
    _mOnPaint(canvas);
  }

  /// 在状态改变时是否重绘。
  /// @param oldDelegate  旧代理
  @override
  bool shouldRepaint(covariant CustomPainter oldDelegate) {
    return true;
  }
}

// 游戏区域
class GameBoard extends CustomPaint {
  /// 构造方法。
  /// @param width    宽度
  /// @param height   高度
  /// @param onPaint  绘图方法
  GameBoard(double width, double height, Function onPaint, {super.key}):
    super(
      size: Size(width, height),
      foregroundPainter: GameBoardPainter(onPaint)
    );
}
